home *** CD-ROM | disk | FTP | other *** search
/ TOS Silver 2000 / TOS Silver 2000.iso / programm / MM2_DEV / S / DEMO / DHRYSTON.ADA / D_PACK_1.I < prev    next >
Encoding:
Modula Implementation  |  1991-01-02  |  2.1 KB  |  79 lines

  1. IMPLEMENTATION MODULE D_Pack_1;
  2.  
  3. (*$R-,S-,Z+*)
  4.  
  5. FROM D_Global   IMPORT  OneToFifty, Enumeration, RecordPointer;
  6. FROM D_Pack_2   IMPORT  IntGlob, Char1Glob, Proc7, Proc6;
  7.  
  8. PROCEDURE Proc1 (    PointerParVal: RecordPointer);
  9.     (* executed once *)
  10. BEGIN
  11.    WITH PointerParVal^.PointerComp^ (* = PointerGlobNext *) DO
  12.       PointerParVal^.PointerComp^ := PointerGlob^;
  13.       PointerParVal^.IntComp := 5;
  14.       IntComp := PointerParVal^.IntComp;
  15.       PointerComp := PointerParVal^.PointerComp;
  16.       Proc3 (PointerComp);
  17.        (* PointerParVal^.PointerComp^.PointerComp = PointerGlob^.PointerComp *)
  18.       IF Discr = Ident1 THEN
  19.          (* executed *)
  20.          IntComp := 6;
  21.          Proc6 (PointerParVal^.EnumComp, EnumComp);
  22.          PointerComp := PointerGlob^.PointerComp;
  23.          Proc7 (IntComp, 10, IntComp);
  24.       ELSE
  25.          (* not executed *)
  26.          PointerParVal^ := PointerParVal^.PointerComp^;
  27.       END; (* if *)
  28.    END; (* with *)
  29. END Proc1; (* Proc1 *)
  30.  
  31.  
  32. PROCEDURE Proc2 (VAR IntParRef:     OneToFifty);
  33.     (* executed once *)
  34.     (* InParRef = 3, becomes 7 *)
  35. VAR IntLoc:  OneToFifty;
  36.     EnumLoc: Enumeration;
  37. BEGIN
  38.    IntLoc := IntParRef + 10;
  39.    REPEAT (* executed once *)
  40.      IF Char1Glob = 'A' THEN
  41.         (* executed *)
  42.         IntLoc := IntLoc - 1;
  43.         IntParRef := IntLoc - IntGlob;
  44.         EnumLoc := Ident1;
  45.      END (* if *)
  46.    UNTIL EnumLoc = Ident1; (* true *)
  47. END Proc2; (* Proc2 *)
  48.  
  49.  
  50. PROCEDURE Proc3 (VAR PointerParRef: RecordPointer);
  51.     (* executed once *)
  52.     (* PointerParRef becomes PointerGlob *)
  53. BEGIN
  54.    IF PointerGlob <> NIL THEN
  55.       (* executed *)
  56.       PointerParRef := PointerGlob^.PointerComp;
  57.    END;
  58.    Proc7 (10, IntGlob, PointerGlob^.IntComp);
  59. END Proc3; (* Proc3 *)
  60.  
  61.  
  62. PROCEDURE Proc4; (* without parameters *)
  63.     (* executed once *)
  64. VAR BoolLoc: BOOLEAN;
  65. BEGIN
  66.    BoolLoc   := Char1Glob = 'A';
  67.    BoolGlob  := BoolLoc OR BoolGlob;
  68.    Char2Glob := 'B';
  69. END Proc4; (* Proc4 *)
  70.  
  71.  
  72. PROCEDURE Proc5; (* without parameters *)
  73.     (* executed once *)
  74. BEGIN
  75.    Char1Glob := 'A';
  76.    BoolGlob  := FALSE;
  77. END Proc5; (* Proc5 *)
  78.  
  79. END D_Pack_1.